namespace OasisCiq.Xnl
{
    using System.Collections.Specialized;
    using CommonTypes;
    using External;
    using XS;

    /// <summary>
    /// Define name as a free format text. Use this when the type of the entity
    /// (person or organisation) is unknown, or is not broken down into individual elements
    /// (e.g. unstructured, unparsed) or is beyond the provided types.
    /// The name represented may be formatted in the right order or may not be as it
    /// is not parsed/broken into atomic fields
    /// </summary>
    public class NameLine : CTString, IAbbreviationGroup, IDataQualityGroup, IExtendedAttributes
    {
        public NameLine(string value)
            : base(value)
        {
        }

        /// <summary>
        /// Type define what this free format name line could mean.
        /// For example, the Type could be "Unknown".
        /// </summary>
        public NameLineTypeList Type { get; set; }

        public XSBoolean Abbreviation { get; set; }

        public DataQualityTypeList DataQualityType { get; set; }

        public XSDateTime ValidFrom { get; set; }

        public XSDateTime ValidTo { get; set; }

        public NameValueCollection ExtendedAttributes { get; set; }
    }
}